#ifndef __WEBPAGE_HPP__
#define __WEBPAGE_HPP__

#include <string>
#include <map>
#include <vector>
#include <set>

using std::string;
using std::map;
using std::vector;
using std::set;

class Configuration;
class WordSegmentation;

//网页类
class WebPage
{
    friend bool operator==(const WebPage& lhs,const WebPage& rhs);//判断两篇文章是否相等
    friend bool operator<(const WebPage& lhs,const WebPage& rhs);//对文档按Docid进行排序

public:
    WebPage(string& doc,Configuration& config,WordSegmentation& jieba);//构造函数
    ~WebPage() {}//析构函数

    int getDocId();//获取文章docid
    string getDoc();//获取文档
    map<string,int>& getWordsMap();//获取文档的词频统计map

private:
    void processDoc(const string& doc,Configuration& config,WordSegmentation& jieba);//对格式化文档进行处理
    void calcTopK(vector<string>& wordsVec,int k,set<string>& stopWordList);//求取文档的topk词集

private:
    const static int TOPK_NUMBER=20;
    string _doc;//整篇文章,包含xml在内
    int _docId;//文档id
    string _docTitle;//文档标题
    string _docUrl;//文档URL
    string _docContent;//文档内容
    string _docSummary;//文档摘要,需要自动生成不能固定
    vector<string> _topWords;//词频最高的前20个词
    map<string,int> _wordsMap;//保存每篇文档的所有词语和词频,不包括停用词

};


#endif
